package com.wgy.day23.Iterator迭代器接口;
/*
Iterator接口:迭代器(对集合进行遍历).因为集合有的可能无法使用for循环
Iterator接口:是一个接口,我们无法直接使用,需要使用Iterator接口的实现类对象,获取Iterator实现类的方式比较特殊
            在Collection接口有一个方法,叫iterator(),这个方法返回的就是迭代器的实现类对象.
                Iterator iterator():返回在此Collection的元素上进行迭代的迭代器
Iterator接口有两种常用的方法:
      Boolean hasNext() 如果任然有元素可以迭代,则返回true
                        用来判断集合中还有没有下一个元素,有就返回true,没有就返回false
               E Next() 返回迭代下一个元素
                        用来取出集合内的下一个元素
迭代器的使用步骤:
1.使用集合中的iterator() 方法获取迭代器实现类对象,使用Iterator接口接收 (多态)
2.使用Iterator接口中的 hasNext() 方法判断还有没有下一个元素
3.使用Iterator接口中的 Next() 方法取出集合中的下一个元素

注意事项:迭代器也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型
*/

import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;

public class Demo02Iterator {
    public static void main(String[] args) {
        //创建一个集合对象
        Collection<String> coll = new ArrayList<>();
        //往集合内添加元素
        coll.add("迪丽热巴");
        coll.add("古力娜扎");
        coll.add("马尔扎哈");
        coll.add("撒扬娜拉");
        System.out.println(coll); // [迪丽热巴, 古力娜扎, 马尔扎哈, 撒扬娜拉]

        //获取迭代器实现类对象
        //注意迭代器也是有泛型的,迭代器的泛型跟着集合走,集合是什么泛型,迭代器就是什么泛型
        Iterator<String> iterator = coll.iterator();

        //使用Iterator接口中的 hasNext()方法判断集合内是否有下一个元素
        boolean b1 = iterator.hasNext();
        System.out.println(b1);   //true

        //使用Iterator接口中的 Next() 方法取出集合中的下一个元素
       String str1= iterator.next();
        System.out.println(str1); //迪丽热巴

        //使用while循环取出写法
        while ( iterator.hasNext()){
            String str= iterator.next();
            System.out.println(str);    //古力娜扎
                                       //  马尔扎哈
                                      //   撒扬娜拉
        }

        //使用for循环取出写法
        for( Iterator<String> it= coll.iterator();   it.hasNext();  ){
            String str= it.next();
            System.out.println(str);
        }


    }
}
